package com.android.uu.view.HorizontalSlideListView;

import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.widget.HorizontalScrollView;
import android.widget.ListAdapter;
import android.widget.ListView;

/**带侧滑的listView
 * 
 * 使用 方法：
 * 1、使用此UUHorizontalSlideListView代替之前普通的ListView;
 * 2、适配器Adapter继承com.android.uu.view.HorizontalSlideListView.UUHorizontalSlideAdapter;
 * 3、Adapter中每个item的布局文件，采用UUHorizontalScrollView下嵌套一个水平LinearLayout的形式，
 *   将子控件一次放入水平LinearLayout
 * 4、在自定义的adapter中对item中的子控件进行初始化完成之后，调用UUHorizontalSlideAdapter
 *   中的initViews(UUHorizontalScrollView scrollview, View front)方法，分别将
 *   item的UUHorizontalScrollView和在不滑动时默认填满手机屏幕的view传进去。
 * 5、定义1+n个点击事件(n为侧滑滑出的控件个数)
 *    holder.layoutFront.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				if (mScrollView != null) {
					scrollView(mScrollView, HorizontalScrollView.FOCUS_LEFT);//关闭侧滑
					mScrollView = null;
					return;//一定要return
				}
				再添加相关操作
			}
		});
	holder.tvDelete.setOnClickListener(new OnClickListener() {
		
		@Override
		public void onClick(View v) {
			if (mScrollView != null) {
				scrollView(mScrollView, HorizontalScrollView.FOCUS_LEFT);//关闭侧滑
				mScrollView = null;
				//这里不需要return
			}
			再添加相关操作
		}
 *   
 * 
 * @author GuiyouZhang
 * Date：2015年12月4日 上午11:00:01
 * Email:guiyouzhang@163.com
 */
public class UUHorizontalSlideListView extends ListView {
	
	private UUHorizontalSlideAdapter mAdapter;

	public UUHorizontalSlideListView(Context context, AttributeSet attrs) {
		super(context, attrs);
	}
//
//    @Override
//	public boolean onTouchEvent(MotionEvent ev) {

    @Override
	public boolean dispatchTouchEvent(MotionEvent ev) {
		if (mAdapter.mLockOnTouch) {
			if (ev.getAction() == MotionEvent.ACTION_DOWN
					|| ev.getAction() == MotionEvent.ACTION_MOVE) {
				if (mAdapter.mScrollView != null) {// 而且有滑出的item
					// 那么先将item复位,并将此次事件拦截消费掉
					mAdapter.scrollView(mAdapter.mScrollView,
							HorizontalScrollView.FOCUS_LEFT);
					mAdapter.mScrollView = null;
					return true;
				}
			}
			if (ev.getAction() == MotionEvent.ACTION_UP) {
				mAdapter.mLockOnTouch = false;
			}
		}
//		return super.onTouchEvent(ev);
		return super.dispatchTouchEvent(ev);
	}
	
	@Override
	public void setAdapter(ListAdapter adapter) {
		super.setAdapter(adapter);
		mAdapter = (UUHorizontalSlideAdapter) adapter;
	}
}
